/*******************************************************************************
 * Copyright 2020 huanggefan.cn
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/

package core

import "time"

const DefTokenCert string = "96be053dab04"
const TokenHeader string = "3c6b9fc1"
const TokenSplitCharacter string = "."
const TokenTimeout = int64(7 * 24 * time.Hour / time.Second)
const TokenCookieName = "AuthToken"

const DefaultPassword = "1234567890"

const (
	ResponseStatusCodeSuccess        = 0
	ResponseStatusCodeServerError    = 1
	ResponseStatusCodeNotAuth        = 2
	ResponseStatusCodeFieldTypeError = 3
	ResponseStatusCodeOtherError     = -1
)

const (
	UserTypeTeacher = 1
	UserTypeStudent = 2
)

const (
	UserGenderMan   = 1
	UserGenderWoman = 2
	UserGenderOther = -1
)

const (
	QuestionLevelBasic       = 0
	QuestionLevelNormal      = 1
	QuestionLevelDifficult   = 2
	QuestionLevelChallenging = 3
)

const (
	QuestionTypeSingle   = 0
	QuestionTypeMultiple = 1
	QuestionTypeJudge    = 2
)

const (
	FileTypeJPG = iota
	FileTypePNG
	FileTypePPT
	FileTypeXLS
	FileTypeDOC
	FileTypePPTX
	FileTypeXLSX
	FileTypeDOCX
	FileTypePDF
	FileTypeMP3
	FileTypeMP4
	FileTypeZIP
)

var (
	FlagHelp          bool
	FlagVersion       bool
	FlagUseSqlite     bool
	FlagUsePG         bool
	FlagSqliteDB      string
	FlagPgAddr        string
	FlagPgPort        int
	FlagPgDB          string
	FlagPgUser        string
	FlagPgPassword    string
	FlagPgSSLMode     string
	FlagPgSSLCert     string
	FlagPgSSLKey      string
	FlagPgSSLRootCert string
	FlagLogLevel      int
)

var (
	BuildTag  string
	BuildGo   string
	BuildTime string
)

var (
	FlagHttpListen  string
	FlagGRPCListen  string
	FlagPPROFEnable bool
	FlagPPROFListen string
	FlagLogWithUDP  bool
	FlagLogAddr     string
	FlagTokenCert   string
)
